﻿#pragma once

#define g_Localisation CDataMgr::Singleton().GetLocalisationCPtr()

class CScriptDataMgr;
class CProgramDataMgr;
class CLocalisation;

class CDataMgr
{
public:
	static CDataMgr& Singleton() { static CDataMgr g_Data; return g_Data; }		// 单例
	void InitData();
	const CLocalisation* GetLocalisationCPtr() const;	// 为方便取翻译指针

public:
	const CScriptDataMgr* GetScriptDataMgrCPtr() const { return m_pScriptDataMgr; }
	const CProgramDataMgr* GetProgramDataMgrCPtr() const { return m_pProgramDataMgr; }

private:
	// 不使用 unique_ptr 是因为需要知道完整类型
	CScriptDataMgr* m_pScriptDataMgr;
	CProgramDataMgr* m_pProgramDataMgr;

public:
	~CDataMgr();
private:
	CDataMgr();
	CDataMgr(const CDataMgr&) = delete;
	CDataMgr& operator =(const CDataMgr&) = delete;
};